// motor.h
#ifndef MOTOR_H_
#define MOTOR_H_

#include "driver/ledc.h"
#define LEDC_MODE LEDC_LOW_SPEED_MODE

class MotorDriver {
public:
    MotorDriver(int ain1, int ain2, int bin1, int bin2);
    void init();
    void stop();
    void forward(uint8_t speed);
    void backward(uint8_t speed);
    void turnLeft(uint8_t speed);
    void turnRight(uint8_t speed);

private:
    int _ain1, _ain2, _bin1, _bin2;

    // 每个引脚一个 PWM 通道
    ledc_channel_t _ch_ain1;
    ledc_channel_t _ch_ain2;
    ledc_channel_t _ch_bin1;
    ledc_channel_t _ch_bin2;

    void setMotor(ledc_channel_t ch1, uint8_t duty1,
                  ledc_channel_t ch2, uint8_t duty2,
                  ledc_channel_t ch3, uint8_t duty3,
                  ledc_channel_t ch4, uint8_t duty4);
};
#endif // MOTOR_H_
